import pymysql


# 创建 数据库 工具类 --- 用大驼峰，不用 Test 开头！---- 不是在封装测试类！
class DBTools(object):
    # 创建 私有工具方法 - 创建连接
    @staticmethod
    def __create_conn():
        conn = pymysql.connect(host="211.103.136.244", port=7061, user="student", password="iHRM_student_2022",
                               database="ihrm", charset="utf8")
        return conn

    # 创建 查询方法 -- 工具 查一条
    @staticmethod
    def query_one(sql):
        conn = None
        cursor = None
        result = None
        try:
            # 调用 建立连接 工具方法
            conn = DBTools.__create_conn()
            # 创建游标
            cursor = conn.cursor()
            # 执行 查询语句
            cursor.execute(sql)
            # 提取 查询的结果集中的 1条记录
            result = cursor.fetchone()

        except Exception as err:
            print("执行sql查询错误：", err)
        finally:
            # 关闭游标
            cursor.close()
            # 关闭连接
            conn.close()
            # 返回结果
            return result

    # 创建 增删改方法
    @staticmethod
    def db_idu(sql):
        conn = None
        cursor = None
        try:
            # 创建连接 - 调用工具方法
            conn = DBTools.__create_conn()
            # 创建游标
            cursor = conn.cursor()
            # 4. 执行 sql 语句
            ret = cursor.execute(sql)
            print("Affected rows:", ret)
            # 提交事务
            conn.commit()
        except Exception as e:
            # 回滚事务
            conn.rollback()
            print("增删改 sql err:", e)
        finally:
            # 5. 关闭游标
            cursor.close()
            # 6. 关闭连接
            conn.close()


# 敲 main 回车
if __name__ == '__main__':
    # 调用 静态方法，测试 查询一条
    result = DBTools.query_one("select * from t_book where id = 780;")
    print("查询结果：", result)

    # 自测，增删改 方法
    # DBTools.db_idu("insert into t_book(id, title, pub_date) values(157, '西游记', '1986-01-01');")
    DBTools.db_idu("update t_book set `read` = `read`+1 where title = '西游记';")
